<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of InscribirRepresentante
 *
 * @author ETorres
 * @export Modules
 * @export-metadata default-module
 */
class InscribirRepresentante extends Module {

    public function index() {
        Loader::using("models::entities::PeriodoAcademico");

        //$Codigo = $this->currentUser->getName();
        //$roles = $this->currentUser->getPermissions();
        
        $Codigo = '1055897';
        $roles = array("ROLE_STUDENT");
        
        if(in_array("ROLE_PROFESSOR", $roles)){
            
            $role = "ROLE_PROFESSOR";
            
            $this->loadCarrers();
            
            /* @var $docente Docentes */
            $docente = $this->model->teachers->GetByUserName($Codigo);
            
            $this->assign("docente", $docente);
        }
        if(in_array("ROLE_STUDENT", $roles)){
            
            $role = "ROLE_STUDENT";
            
            /* @var $student Estudiantes */
            $student = $this->model->students->GetById($Codigo);

            if (!is_null($student)) {

                $this->assign("estudiante", $student);

                $Aprobados = $this->model->registeredCourse->GetAprobados($Codigo);
                $Aprobados = $this->ordenarCursos($Aprobados);


                $numPeriodos = 0;

                foreach ($Aprobados as $periodo) {
                    $numPeriodos++;
                }

                $contPeriodos = 0;
                $ultimo = 0;
                $notaDef = 0.0;
                $cont = 0;
                foreach ($Aprobados as $Cursos) {

                    $contPeriodos++;

                    if ($contPeriodos <= $numPeriodos) {

                        $cont++;

                        $nota = 0.0;
                        $contInterno = 0;

                        foreach ($Cursos as $curso) {

                            $contInterno++;
                            $nota = $nota + $curso->getNotaDefinitiva();
                        }

                        if ($contPeriodos == $numPeriodos) {
                            $ultimo = $nota / ($contInterno);
                        }

                        if ($contInterno != 0) {
                            $notaDef = $notaDef + $nota / ($contInterno);
                        }
                    }
                }

                $final = 0;
                $final = $notaDef / $cont;
                $final = round($final, 2);
                $ultimo = round($ultimo, 2);


                $this->assign("promedioAcumulado", $final);
                $this->assign("ultimoPromedio", $ultimo);

            }
        }else{
            $role = "ROLE_PROFESSOR";
            
            $this->loadCarrers();
            
            /* @var $docente Docentes */
            
            $docente = $this->model->teachers->GetByUserName($Codigo);
            var_dump($docente);
            
            $this->assign("docente", $docente);
        }
        if($Codigo != null){
            $this->assign("role", $role);
            $this->assign("action", $this->route->action("save"));
            $this->display("index");
        }else{
            $this->Error("notLogin");
        }
    }

    private function ordenarCursos($cursos) {
        $cursosOrdenados = array();
        foreach ($cursos as /* @var $curso CursosMatriculados */$curso) {
            $semestre = $curso->getCurso()->getCursoPk()->getSemestre();

            if (!isset($cursosOrdenados[$semestre])) {
                $cursosOrdenados[$semestre] = array();
            }
            $cursosOrdenados[$semestre][] = $curso;
        }
        ksort($cursosOrdenados);
        return $cursosOrdenados;
    }

    private function extension($file) {
        return substr(strrchr($file, '.'), 1);
    }

    public function save() {

        $representantes = $this->request->post("representante");
        $role = $this->request->post("role");
        
        if($role == "ROLE_STUDENT"){
            
            $codigo = $representantes["codigo_estudiante"];

            $resp = $this->model->RepresentantesData->BuscarRepresentanteEstudiante($codigo);

            $resp = count($resp);

            if ($resp == 0) {

                $foto = $_FILES['foto']['name'];
                $plan_Trabajo = $_FILES['plan_Trabajo']['name'];

                $destino = "components/com_acaweb/files/uploads/Representantes/";

                copy($_FILES['foto']['tmp_name'], $destino . $codigo . "." . $this->extension($foto));
                copy($_FILES['plan_Trabajo']['tmp_name'], $destino . "planTrabajo" . $codigo . "." . $this->extension($plan_Trabajo));

                $flag = false;

                if (isset($representantes["postulacion_anterior"])) {
                    $representantes["postulacion_anterior"] = 1;
                    $flag = true;
                } else {
                    $representantes["postulacion_anterior"] = 0;
                }

                if ($flag) {
                    if (isset($representantes["elegido"])) {
                        $representantes["elegido"] = 1;
                    } else {
                        $representantes["elegido"] = 0;
                    }
                } else {
                    $representantes["elegido"] = 0;
                }

                $representantes["formatoFoto"] = $this->extension($foto);
                $representantes["formatoPlan"] = $this->extension($plan_Trabajo);

                $this->model->RepresentantesData->guardarEstudiante($representantes);

                $this->addMessage(new Message("Su Inscripción a sido procesada exitosamente.", "", Message::SUCCESS));
                $this->display();
                
            } else {
                $this->Error("registred");
            }
            
        } else {
            
            $nit = $representantes["nit"];

            $resp = $this->model->RepresentantesData->BuscarRepresentanteDocente($nit);

            $resp = count($resp);

            if ($resp == 0) {

                $foto = $_FILES['foto']['name'];
                $plan_Trabajo = $_FILES['plan_Trabajo']['name'];

                $destino = "components/com_acaweb/files/uploads/Representantes/";

                copy($_FILES['foto']['tmp_name'], $destino . $nit . "." . $this->extension($foto));
                copy($_FILES['plan_Trabajo']['tmp_name'], $destino . "planTrabajo" . $nit . "." . $this->extension($plan_Trabajo));

                $flag = false;

                if (isset($representantes["postulacion_anterior"])) {
                    $representantes["postulacion_anterior"] = 1;
                    $flag = true;
                } else {
                    $representantes["postulacion_anterior"] = 0;
                }

                if ($flag) {
                    if (isset($representantes["elegido"])) {
                        $representantes["elegido"] = 1;
                    } else {
                        $representantes["elegido"] = 0;
                    }
                } else {
                    $representantes["elegido"] = 0;
                }

                $representantes["formatoFoto"] = $this->extension($foto);
                $representantes["formatoPlan"] = $this->extension($plan_Trabajo);

                $this->model->RepresentantesData->guardarDocente($representantes);

                $this->addMessage(new Message("Su Inscripción a sido procesada exitosamente.", "", Message::SUCCESS));
                $this->display();
                
            } else {
                $this->Error("registred");
            }
            
        }
    }

    public function Error($tipo) {
        
        if($tipo == "notLogin"){
            $this->addMessage(new Message("Debe estar logeado", "", Message::ERROR));
        }
        if($tipo == "registred"){
            $this->addMessage(new Message("El usuario ya esta inscrito", "", Message::ERROR));
        }

        $this->display("Error");
    }
    private function loadCarrers() {        
        $programas = $this->model->career->GetByTipoPrograma(0, false);

        $this->assign("Carreras", $programas);
    }

}

?>
